Use case: USART TX in DMA mode ¶
Sequence diagram ¶
Code snippet ¶
|
HAL1 |
HAL2 |
|---|---|
#define DATA_TO_SEND_SIZE 255
uint8_t aTxBuffer[] = " **** USART_SlaveMode **** ";
USART_HandleTypeDef husart;
/* Ensure that all required peripherals
(USART, GPIO, DMA, NVIC,etc.) are configured properly
/*
...
*/
/* USART register Transmit complete user callback */
HAL_USART_RegisterCallback(&husart, HAL_USART_TX_CB_ID,
USART_TxCpltCallback);
/* Start a USART Process in dma mode */
HAL_USART_Transmit_DMA(&husart, aTxBuffer,
DATA_TO_SEND_SIZE)
|
#define DATA_TO_SEND_SIZE 255
uint8_t aTxBuffer[] = " **** USART_SlaveMode **** ";
hal_usart_handle_t husart;
/* init and config for USART instance */
/*
...
*/
/* USART register Transmit complete user callback */
HAL_USART_RegisterTxCpltCallback(&husart, USART_TxCpltCallback);
/* Start a USART Process in dma mode */
HAL_USART_Transmit_DMA(&husart, aTxBuffer,
DATA_TO_SEND_SIZE)
|
Key changes ¶
HAL2 DMA start uses
HAL_DMA_StartPeriphXfer_IT_Opt()(optional interrupt generation) instead ofHAL_DMA_Start_IT().HAL2 provides a dedicated registration API for TX completion callbacks:
HAL_USART_RegisterTxCpltCallback().

